In a cloud computing environment, computing is delivered as a service rather than a product, whereby shared resources, software and information are provided to computers and other devices as a metered service over a network, such as the Internet. In such an environment, computation, software, data access and storage services are provided to users that do not require knowledge of the physical location and configuration of the system that delivers the services.
In a virtualized computer environment, such as may be implemented in a physical cloud computing node of the cloud computing environment, the virtualized computer environment includes a virtual operating system. The virtual operating system includes a common base portion and separate user portions that all run on a physical computer. The physical computer is referred to as a host. The common base portion may be referred to as a hypervisor and each user portion may be called a guest. Each guest is a logical partition of the physical resources of the computer. A guest operating system runs on each guest, and the guest appears to the guest operating system as a real computer. Each guest operating system may host one or more virtual machines.
Currently, when a new virtual machine is required to be utilized by the user (i.e., a new virtual machine is required to service the user's workload), various tasks need to be performed utilizing cloud resources. For example, when a new virtual machine is deployed to service the user's workload, a new virtual disk is allocated on a storage device, an operating system is loaded into memory and initialized and various first-boot activities are performed, such as setting a hostname, network address, etc.
One method for reducing the burden of virtual machine provisioning at deployment time is to create a pool of pre-deployed virtual machines which may be used when a user requests an instance of a virtual machine. However, the pool of pre-deployed virtual machines is populated with only newly provisioned virtual machines. As discussed above, newly provisioned virtual machines require a significant amount of cloud resources to be utilized. Hence, such a method only shifts the burden of virtual machine provisioning prior to deployment time. That is, such a method only reduces the amount of cloud resources being utilized at the virtual machine deployment time but does not reduce the overall amount of cloud resources being utilized since these cloud resources are being utilized prior to the virtual machine deployment time.
If, however, the pool of available virtual machines to be deployed could be populated with previously terminated virtual machines as opposed to only newly provisioned virtual machines, then an overall reduction in the cloud resources being utilized could be achieved.
Unfortunately, there is not currently a means for populating the pool of available virtual machines to be deployed with previously terminated virtual machines as opposed to only newly provisioned virtual machines.